package com.zj.cman.modules.user.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.sql.Timestamp;

@Data
@TableName("users")
public class User {

    @TableId(type = IdType.AUTO)
    private Long id; // 用户ID，主键，自增

    private String username; // 用户名，唯一，不能为空

    private String password; // 密码哈希（使用强加密算法如 bcrypt 存储），不能为空

    private String email; // 电子邮件地址，唯一，不能为空

    private String phoneNumber; // 手机号码，唯一，可选

    private String fullName; // 用户全名

    private String avatarUrl; // 用户头像URL，可选

    @TableField(fill = FieldFill.INSERT)
    private String status; // 用户状态：激活、未激活、封禁，默认为 inactive

    @TableField(fill = FieldFill.INSERT)
    private Timestamp createdTime; // 创建时间，默认为当前时间

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Timestamp updatedTime; // 更新时间，默认为当前时间，并在每次更新时自动更新

    private Timestamp lastLoginTime; // 最后登录时间，可选

    private Integer failedAttempts; // 登录失败次数，默认为 0

    private Timestamp lockoutUntil; // 账户锁定时间，可选

    // 构造函数、getter 和 setter 方法由 Lombok 自动生成
}
